/* TCSS 590A - Cybernetics and Systems
 * Group Project - Modeling
 * By Barry Jones, Naren Meadem, Michael Pitts, Yuan Tao
 * Fall 2012, University of Washington, Tacoma
 */
package output;

import java.io.Closeable;

import control.Constants;

/**
 * Provides the core functionality of a OutPut type Object.
 * @author Barry Jones, Naren Meadem, Michael Pitts, Yuan Tao
 * @version Oct 30, 2012
 */
public interface OutPut extends Closeable, Constants
{
	/** The default new line String.*/
	public static final String NEWLINE = "\r\n";
	
	/** The default delineator String.*/
	public static final String DELINEATOR = "\t";
	
	/**
	 * Puts a newline, or equivalent, to the output.
	 */
	public void newLine();
	
	/**
	 * Outputs a single string.
	 * @param the_data is the String to copy out.
	 */
	public void out(final String the_data);
	
	/**
	 * Outputs multiple strings, with a delineator between each.
	 * @param the_data are the strings to output, in order.
	 */
	public void out(final String[] the_data);
	
	/**
	 * Outputs an integer type number.
	 * @param the_data is the number to output.
	 */
	public void out(final long the_data);
	
	/**
	 * Outputs multiple integer type numbers, separated by a delineator.
	 * @param the_data is the set of numbers to output, in order.
	 */
	public void out(final long[] the_data);
	
	/**
	 * Outputs a floating point type number.
	 * @param the_data is the floating number to output.
	 */
	public void out(final double the_data);
	
	/**
	 * Outputs multiple floating point type numbers, with a delineator between each.
	 * @param the_data is the floating point numbers to output, in order.
	 */
	public void out(final double[] the_data);
	
	/**
	 * Closes this output.
	 */
	public void close();
	
	/**
	 * Outputs the delineator.
	 */
	public void delineate();

}
